package com.huanf.controller;

import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import com.huanf.domain.SimpleReadVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.FileInputStream;
import java.util.List;

/**
 * @author: 35238
 * 功能: 读Excel，读取基本数据类型的表格数据(无数据库)
 * 时间: 2023-12-26 20:56
 */
@RestController
@Slf4j
public class SimpleReadController {

    //要读取Excel在哪个位置
    String PATH = "E:\\桌面\\Java-Ready\\conf\\Excel\\easyPoiSimpleWrite.xlsx";

    @GetMapping("/simpleRead") //浏览器访问 http://localhost:8081/simpleRead
    public void simpleRead() throws Exception {
        /**
         * 创建工作簿。ExcelImportUtil是poi官方提供的类。importExcel适用于小数据量，例如一万条内
         * importExcel方法的参数: 参数1 要读取的Excel文件流，参数2 读取给哪个实体类，参数3 官方提供的ImportParams对象(该对象可以配置一些信息，例如占几行，读取哪个sheet、读取多少个sheet)
         */
        ImportParams params = new ImportParams();
        params.setTitleRows(1);//可选。默认是1，设置标题行占一行(以实际情况为准，表格那边是几行，就写几行，不然读取会出问题)，标题行就是第一行，例如'用户信息列表'
        params.setHeadRows(1);//可选。默认是1设置头部行占一行(以实际情况为准，表格那边是几行，就写几行，不然读取会出问题)，头部行就是第二行，例如'编号'、'姓名'、'生日'、'年龄'
        params.setStartSheetIndex(0);//可选。默认是0，表示读取第一个sheet。注意默认是只读一个sheet，除非你设置setSheetNum配置信息，如下一行
        //params.setSheetNum(2);//可选。表示读取多个sheet，表示读取第一、二、三个sheet。其实就是最大为2，从0开始，中间的0、1、2表格都会被读取
        params.setImportFields(new String[]{"编号","姓名"});//可选。表示当表格里面有'编号'and'编号'列时，才会读取，不然就不执行读取程序
        List<SimpleReadVo> simpleReadVo = ExcelImportUtil.importExcel(new FileInputStream(PATH), SimpleReadVo.class, params);
        simpleReadVo.forEach(System.out::println);//输出读取到的内容
    }

}
